package cn.ryh.pay.domain;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

/**
 * @author Raoyh
 * @Description
 * @create 2023-02-16 16:53
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class WxNativeBodyVo {
    /**
     * 应用ID
     */
    private String appid;
    /**
     * 直连商户号
     */
    private String mchid;

    /**
     * 商品描述
     */
    private String description;

    /**
     * 商户订单号
     */
    private String out_trade_no;
    /**
     * 交易结束时间
     * 格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE
     * yyyy-MM-DD表示年月日
     * T出现在字符串中表示time元素的开头
     * HH:mm:ss表示时分秒
     * TIMEZONE表示时区
     */
    private String time_expire;
    /**
     * 附加数据
     */
    private String attach;

    /**
     * 通知地址
     * 通知URL必须为直接可访问的URL，不允许携带查询串，要求必须为https地址。
     */
    private String notify_url;
    /**
     * 订单优惠标记
     * 通知URL必须为直接可访问的URL，不允许携带查询串，要求必须为https地址。
     */
    private String goods_tag;
    /**
     * 电子发票入口开放标识
     */
    private Boolean support_fapiao;

    /**
     * 订单金额信息
     */
    private Amount amount;
    /**
     * 优惠功能
     */
    private Detail detail;
    /**
     * 支付场景描述
     */
    private SceneInfo scene_info;
    /**
     * 结算信息
     */
    private SettleInfo settle_info;
    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Amount {
        /**
         * 订单总金额，单位为分。
         */
        private Integer total;
        /**
         * 货币类型
         * CNY：人民币，境内商户号仅支持人民币。
         */
        private String currency;
    }
    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Detail {
        /**
         * 订单原价
         */
        private Integer cost_price;
        /**
         * 商品小票ID
         *
         */
        private String invoice_id;
    }
    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class SceneInfo {
        /**
         * 用户终端IP
         */
        private Integer payer_client_ip;
        /**
         * 商户端设备号
         *
         */
        private String device_id;
    }
    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class SettleInfo {
        /**
         * 是否指定分账
         */
        private Boolean profit_sharing;

    }
}
